package com.neverwinterdp.scribengin.nizarS3; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.google.inject.AbstractModule; import com.neverwinterdp.scribengin.nizarS3.sink.S3SinkConfig; import com.neverwinterdp.scribengin.storage.StreamDescriptor; import com.neverwinterdp.scribengin.storage.sink.partitioner.OffsetPartitioner; import com.neverwinterdp.scribengin.storage.sink.partitioner.SinkPartitioner; /** * The Class S3Module. */ public class S3TestModule extends AbstractModule { /** The s3 sink config. */ private S3SinkConfig s3SinkConfig; /** The mock. */ private boolean mock = true; private StreamDescriptor descriptor; /** * The Constructor. * * @param propFilePath * the prop file path * @param topic * the topic * @param kafkaPartition * the kafka partition */ public S3TestModule(StreamDescriptor descriptor) { s3SinkConfig = new S3SinkConfig(descriptor); this.mock = false; } public S3TestModule(StreamDescriptor descriptor, boolean mock) { this.descriptor = descriptor; s3SinkConfig = new S3SinkConfig(descriptor); this.mock = mock; } /* * (non-Javadoc) * * @see com.google.inject.AbstractModule#configure() */ @Override protected void configure() { if (mock) { AWSCredentials credentials = new BasicAWSCredentials("", ""); AmazonS3Mock amazonS3Mock = new AmazonS3Mock(credentials); amazonS3Mock.createBucket(descriptor.get("bucketName")); bind(AmazonS3.class).toInstance(amazonS3Mock); } else { AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider().getCredentials(); } catch (Exception e) { throw new AmazonClientException( "Cannot load the credentials from the credential profiles file. ", e); } bind(AmazonS3.class).toInstance(new AmazonS3Client(credentials)); } System.out.println("region " + s3SinkConfig.getRegionName()); SinkPartitioner sp = new OffsetPartitioner(s3SinkConfig.getOffsetPerPartition()); bind(SinkPartitioner.class).toInstance(sp); bind(S3SinkConfig.class).toInstance(s3SinkConfig); } }